perm filename PARLOG[E83,JMC] blob sn#723520 filedate 1983-08-23 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	Parlog Seminar
C00005 ENDMK
CāŠ—;
Parlog Seminar

Keith Clark will give a seminar on Parlog Thursday, Sept. 1 at 3 p.m in 
Room 252 MJH.



	      PARLOG: A PARALLEL LOGIC PROGRAMMING LANGUAGE

			      Keith L. Clark

ABSTRACT

	PARLOG is a logic programming language in the sense that nearly every
definition and query can be read as a sentence of predicate logic.  It differs
from PROLOG in incorporating parallel modes of evaluation.  For reasons of
efficient implementation, it distinguishes and separates and-parallel and 
or-parallel evaluation.
	PARLOG relations are divided into two types:  and-relations and
or-relations.  A sequence of and-relation calls can be evaluated in parallel
with shared variables acting as communication channels.  Only one solution
to each call is computed.
	A sequence of or-relation calls is evaluated sequentially but all the
solutions are found by a parallel exploration of the different evaluation
paths.  A set constructor provides the main interface between and-relations
and or-relations.  This wraps up all the solutions to a sequence of or-relation
calls in a list.  The solution list can be concurrently consumed by an
and-relation call.
	The and-parallel definitions of relations that will only be used in a
single functional mode can be given using conditional equations.  This gives
PARLOG the syntactic convenience of functional expressions when non-determinism is 
not required.  Functions can be invoked eagerly or lazily; the eager evaluation 
of nested function calls corresponds to and-parallel evaluation of conjoined
relation calls.
	This paper is a tutorial introduction and semi-formal definition of
PARLOG.  It assumes familiarity with the general concepts of logic programming.